
/*
 * 封装Ajax请求（错误信息放在error_message中）
 * 
 * short_url 请求URL（不包括appPath）
 * data JSON对象，提交的数据，后台通过request.getParameter("data")获取其字符串型
 * callback 请求成功的回调函数，参数为返回JSON对象
 */
function ajax(short_url, data, callback, async){
	var asyn = async;
	if(typeof async === 'undefined'){
		asyn = true;
	}
	$.ajax({
		type: "POST"
		,url: appPath + short_url
		,async: asyn
		,timeout: 30*1000
		,data: {"data":$.toJSONString(data)}
		,dataType: "json"
		,beforeSend : function(){
			$.showProgress();
		},
		complete : function(){
			$.hideProgress();
		}
		,success: function(json){//alert($.toJSONString(json));
			if(!$.isEmpty(json["error_message"])){
				$.messageBox.alert({title : '错误信息',content : json["error_message"]});
			}else{
				callback(json["data"],json);
			}
		}
		,error:function(xhr,textStatus,errorThrown){
	   		$.messageBox.alert({title : '错误信息',content : textStatus+":\n"+$.toJSONString(errorThrown)});
		}
	});
}

/**
 * 绑定数据到表单内的所有控件上（目前支持input、textarea）
 * 
 * @param formId 表单的id
 * @param jsonData 包含数据的JSON对象（key必须与控件id一致）
 */
function bindFormData(formId, jsonData){
	$("#"+formId+" :input[name]")
	.each(function(index){
		var name = $(this).attr("name");
		var value = jsonData[name];
		$(this).val(value);
	});
}
/**
 * 返回表单数据的JSON对象（key为id）
 * @param formId 表单的id
 */
function getFormData(formId){
	var jsonData = {};
	$("#"+formId+" input[name]")
	.add(("#"+formId+" textarea[name]"))
	.add(("#"+formId+" select[name]"))
	.each(function(index){
		if($(this).is(':radio')){
			if($(this).is(':checked')){
				var key = $(this).attr("name");
				jsonData[key] = $(this).val();
			};
		}else{
			var key = $(this).attr("name");
			jsonData[key] = $(this).val();
		};
	});
	return jsonData;
}

function clearFormData(formId){
	$("#"+formId+" input[name]")
	.add(("#"+formId+" textarea[name]"))
	.add(("#"+formId+" select[name]"))
	.each(function(index){
		$(this).val('');
	});
}

/**
 * 设置表单中的控件为只读，下拉框等设置为禁用状态
 * @param formId
 */
function setFormReadonly(formId){
	$("#"+formId+" :input[name]")
	.add(("#"+formId+" textarea[name]"))
	.add(("#"+formId+" select[name]"))
	.each(function(index){
		$(this).attr("readonly","true");
	});
	$("#"+formId+" .combo-f").each(function(index){
		/*alert("name:"+$(this).attr("name")
				+"\tid:"+$(this).attr("id")
				+"\t"+$(this).hasClass("combo-f"));*/
		$(this).combo("disable");
	});
}
/**
 * 取消表单中控件的只读状态，下拉框等的禁用状态
 * @param formId
 */
function setFormEnabeled(formId){
	$("#"+formId+" :input[name]")
	.add(("#"+formId+" textarea[name]"))
	.add(("#"+formId+" select[name]"))	
	.each(function(index){
		$(this).attr("readonly",false);
	});
	$("#"+formId+" .combo-f").each(function(index){
		/*alert("name:"+$(this).attr("name")
				+"\tid:"+$(this).attr("id")
				+"\t"+$(this).hasClass("combo-f"));*/
		$(this).combo("enable");
	});
}

/**
 * @add by 丁益军
 */
//调试函数$.dump();
jQuery(function($) {

  /* 判断id是否为null */
  $.idisnull = function(id)
  {
      return $$(id) === null;
  };

  /* 获取dom对象 */
  function $$(id)
  {
      return document.getElementById(id);
  }

  /* 超级强大的输出测试 */
  $.dump = function( msg,time )
  {
      time = time && time * 1000 || 2000;

      if (typeof msg === "string")
      {
          msg = msg.indexOf('|') != -1 && '<p>'+ msg.split('|').join('</p><p>') ||'<p>' + msg ;
      }

      if (typeof msg === 'object')
      {
          var msgs = new Array();
          for(var p in msg)
          {
              msgs.push(p + ':&nbsp;' + msg[p]);
          }
          msg = '<p>' + msgs.join('</p><p>');
      }


      if ( $.idisnull('debug_dump') )
      {
          $('body').prepend('<div id="debug_dump"></div>');
      }

      $('div#debug_dump')
          .css({
              position        : 'absolute',
              backgroundColor : '#000',
              opacity         : '0.65',
              top             : '0',
              left            : '0',
              width           : $('body').width(),
              lineHeight      : '28px',
              zIndex          : '99999',
              textIndent      : '10px',
              color           : '#fff'
          })
          .html('输出结果是： '+ msg +'</p>')
          .click(function(){
              $(this).mouseout(function(){
                  setTimeout(function(){
                      $('div#debug_dump').fadeOut('slow').empty().remove();
                  },time);
              });
          });
  };

  //js实现trim
  String.prototype.trim= function(){  
	    // 用正则表达式将前后空格  
	    // 用空字符串替代。  
	    return this.replace(/(^\s*)|(\s*$)/g, "");  
	}
  
});


/**
 * options 截取的长度
 * $(ele).cutText(8);8 为截取的长度
 */
(function($) {
    jQuery.fn.cutText = function(options) {
        this.each(function() {
            var textValue = $(this).text();
            if (textValue.length > options) {
                $(this).attr("title", textValue); //鼠标移到文字上显示全部内容
                $(this).text(textValue.replace(textValue.slice((textValue.length-options)/2,(textValue.length+options)/2), "..."));
            }
        });
    }
})(jQuery);
